/* global Cesium viewer */

// let primiLine = new Cesium.PrimitiveCollection();
// let primiArea = new Cesium.PrimitiveCollection();

class CommonJs {
    setPrimiObg() {
        if (!this.primiLine) {
            this.primiLine = new Cesium.PrimitiveCollection();
        }
        if (!this.primiArea) {
            this.primiArea = new Cesium.PrimitiveCollection();
        }
    }
    addPrimitive() {
        viewer.scene.primitives.add(this.primiLine);
        viewer.scene.primitives.add(this.primiArea);
    }
    getPrimiLine() {
        return this.primiLine;
    }
    getPrimiArea() {
        return this.primiArea;
    }
    /**
     * 时间转换成yyyy-MM-dd hh:mm:ss
     */
    timeChange(date) {
        if (date) {
            let year = date.getFullYear();
            let month = Number(date.getMonth()) + 1;
            let day = date.getDate();
            let hours = date.getHours();
            let minutes = date.getMinutes();
            let seconds = date.getSeconds();
            return (
                year +
                '-' +
                this.oneToTwo(month) +
                '-' +
                this.oneToTwo(day) +
                ' ' +
                this.oneToTwo(hours) +
                ':' +
                this.oneToTwo(minutes) +
                ':' +
                this.oneToTwo(seconds)
            );
        } else {
            return '';
        }
    }
    /**
     * 时间格式一个数字转两个数字
     */
    oneToTwo(str) {
        let resStr = str;
        if (String(str).length < 2) {
            resStr = '0' + String(str);
        }
        return resStr;
    }
    /**
     * 经纬度改变，如果最大，最小经纬度相同，改成一个点
     */
    changeLngLat(item) {
        if (item.maxlatitude === item.minlatitude && item.minlongitude === item.maxlongitude) {
            item.lon = item.minlongitude;
            item.lat = item.maxlatitude;
            item.sitGeoIsPoint = true;
        } else {
            item.latLngArr = [
                item.minlongitude,
                item.minlatitude,
                item.maxlongitude,
                item.minlatitude,
                item.maxlongitude,
                item.maxlatitude,
                item.minlongitude,
                item.maxlatitude,
                item.minlongitude,
                item.minlatitude,
            ];
            item.sitGeoIsPoint = false;
        }
    }
    // 去除数组重复数据
    arrDuplicate(arr, isNum) {
        let obg = {};
        arr.forEach(item => {
            obg[item] = null;
        });
        let resData = [];
        Object.keys(obg).forEach(item => {
            resData.push(Number(item));
        });
        return resData;
    }
    /**
     * 经纬度范围转wkt
     */
    lngLatToWtk(latLngArr) {
        let WKTStr =
            'POLYGON((' +
            latLngArr[3] +
            ' ' +
            latLngArr[0] +
            ',' +
            latLngArr[1] +
            ' ' +
            latLngArr[0] +
            ',' +
            latLngArr[1] +
            ' ' +
            latLngArr[2] +
            ',' +
            latLngArr[3] +
            ' ' +
            latLngArr[2] +
            ',' +
            latLngArr[3] +
            ' ' +
            latLngArr[0] +
            '))';
        return WKTStr;
    }
    /**
     * 导出文件
     */
    downLoadXls(data, filename) {
        let blob = new Blob([data], { type: 'application/zip' });
        let url = window.URL.createObjectURL(blob);
        const link = document.createElement('a'); // 创建a标签
        link.href = url;
        link.download = filename; // 重命名文件
        link.click();
        URL.revokeObjectURL(url); // 释放内存
    }
    // 快速排序
    quickSort(ary, left, right) {
        if (left >= right) {
            return ary;
        }

        let i = left;
        let j = right;
        let base = ary[left];

        while (i < j) {
            // 从右边起，寻找比基数小的数
            while (i < j && ary[j] >= base) {
                j--;
            }

            // 从左边起，寻找比基数大的数
            while (i < j && ary[i] <= base) {
                i++;
            }

            if (i < j) {
                let temp = ary[i];
                ary[i] = ary[j];
                ary[j] = temp;
            }
        }

        ary[left] = ary[i];
        ary[i] = base;

        this.quickSort(ary, left, i - 1);
        this.quickSort(ary, i + 1, right);

        return ary;
    }
}
export default new CommonJs();
